package com.chenyuxin.ilp.service.file;

import com.chenyuxin.ilp.model.dto.file.DeleteShareUserDto;
import com.chenyuxin.ilp.model.pojo.Result;
import com.rabbitmq.client.LongString;
import org.springframework.http.HttpEntity;

public interface SharePermissionService {

    /**
     * 设置文件夹为共享文件夹
     * @param folderId 文件夹id
     * @param userId 用户id
     * @return result
     */
    Result setFolderShare(Long folderId, String userId);

    /**
     * 设置文件为共享文件
     * @param fileId 文件id
     * @param userId 用户id
     * @return result
     */
    Result setFileShare(Long fileId, String userId);
    /**
     * 设置文件夹为非共享
     * @param folderId 文件夹id
     * @param userId 用户id
     * @return result
     */
    Result setFolderNoshare(Long folderId, String userId);

    /**
     * 设置文件为非共享
     * @param fileId 文件id
     * @param userId 用户id
     * @return result
     */
    Result setFileNoshare(Long fileId, String userId);

    /**
     * 添加共享文件夹用户
     * @param folderid 文件夹id
     * @param visitUserId 授权共享的用户id
     * @param userId 用户id
     * @return result
     */
    Result addFolderPermission(Long folderid, String visitUserId, String userId);

    /**
     * 添加共享文件用户
     * @param fileId 文件id
     * @param visitUserId 授权共享的用户id
     * @param userId 用户id
     * @return result
     */
    Result addFilePermission(Long fileId, String visitUserId, String userId);

    /**
     * 查询用户在某文件所属者的共享文件树型结构
     * @param hostUserId 资源所属人用户id
     * @param userId 用户id
     * @return result
     */
    Result selectHostFileTree(String hostUserId, String userId);

    /**
     * 预览共享文件
     * @param fileId 文件id
     * @param userId 用户id
     * @return result
     */
    Result previewShareFile(Long fileId,String userId);

    /**
     * 下载共享文件
     * @param fileId 文件id
     * @param userId 用户id
     * @return entity
     */
    HttpEntity<byte[]> downloadFile(Long fileId, String userId);

    /**
     * 获取共享文件夹用户
     * @param folderId 文件夹id
     * @param userId 用户id
     * @return List<ShareUserVo>
     */
    Result getShareFolderUser(Long folderId, String userId);

    /**
     * 获取共享文件用户
     * @param fileId 文件id
     * @param userId 用户id
     * @return List<ShareUserVo>
     */
    Result getShareFileUser(Long fileId, String userId);

    /**
     * 用户查询自己能够共享的文件
     * @param userId 用户id
     * @return List<ShareVo>
     */
    Result getShare(String userId);

    /**
     * 删除共享用户
     * @param deleteShareUserDto 删除共享用户表单
     * @param userId 用户id
     * @return result
     */
    Result deleteShareUser(DeleteShareUserDto deleteShareUserDto, String userId);

    /**
     * 获取用户共享文件字内容
     * @param parentId 父结点id
     * @param userId 用户id
     * @return List<ShareFileFolderVo>
     */
    Result getFolderSon(Long parentId, String userId);
}
